// Componet/Componet.js
Component({
    /**
     * 组件的属性列表
     */
      properties: {
          propArray:{
              type:Array,
          },
          nowText:{
              type:String,
              value:'请选择'//初始内容
          },
          selectShow:{
              type:Boolean,
              value:false
          },//初始option不显示
          arrTag:{
              type:String,
              value:''//选项提示
          },
          searchFlag:{
              //是否有搜索框
              type:Boolean,
              value:false
          },
          mustFlag:{
              //是否是必填项目
              type:Boolean,
              value:false
          }
      },
    /**
     * 组件的初始数据
     */
      data: {
        //   selectShow:false,//初始option不显示
        //   nowText:"",
          animationData:{},//右边箭头的动画
          animationDetail:{},//数据的动画
          searchText:'',//搜索的内容
          handleArray:''//保存由父组件传来的数组
      },
      ready(){
          this.setData({'handleArray':this.properties.propArray})
      },
    /**
     * 组件的方法列表
     */
      methods: {
  　　　//option的显示与否
          selectToggle:function(e){
              var nowShow=this.data.selectShow;//获取当前option显示的状态
              if(!nowShow){
                this.setData({
                    selectShow: !nowShow
                })
                setTimeout(()=>{
                    this.createAnimation(nowShow)
                 },100)
              }else{
                this.createAnimation(true)
                setTimeout(()=>{
                    this.setData({
                        selectShow: !nowShow
                    })
                },400)
              }
              
            
          },
          createAnimation(nowShow){
                 //创建动画
                 var animation = wx.createAnimation({
                    timingFunction:"ease"
                })
                var animation1 = wx.createAnimation({
                    //数据的动画
                  timingFunction:"ease"
              })
                this.animation=animation;
                this.animation1=animation1;
                if(nowShow){
                    animation.rotate(0).step();
                    animation1.height(0).step();
                    this.setData({
                        animationData: animation.export(),
                        animationDetail:animation1.export()
                    })
  
                }else{
                    animation.rotate(180).step();
                    if(this.data.handleArray.length<=3){
                        animation1.height(100).step();
                    }else{
                        if(this.data.searchFlag){
                            animation1.height(150).step();
                        }else{
                            animation1.height(200).step();
                        }
                        
                    }   
                    
                                 
                    this.setData({
                        animationData: animation.export(),
                        animationDetail:animation1.export()
                    })
                }
          },
          //设置内容
          setText:function(e){
              var nowData = this.data.handleArray;//当前option的数据是引入组件的页面传过来的，所以这里获取数据只有通过this.properties
              var nowIdx = e.target.dataset.index;//当前点击的索引
              var nowText = nowData[nowIdx].name;//当前点击的内容
              var selectItem=nowData[nowIdx];//当前点击项的数据
              //再次执行动画，注意这里一定，一定，一定是this.animation来使用动画
              this.setData({nowText:nowText});
              this.triggerEvent('getItem',selectItem)
              this.createAnimation(true)
                setTimeout(()=>{
                    //关闭动画执行完才隐藏
                    this.setData({
                        selectShow: false
                    })
                },400)
                
          },
          setInit(text){
              //恢复默认值
              this.setData({nowText:text});
          },
          getSearch(e){
              //获取搜索内容
              this.setData({'searchText':e.detail.value})
                const arr=   this.fuzzyQuery(this.data.searchText);
                // this.data.handleArray=arr
                if(e.detail.value==''){
                    this.setData({handleArray:this.properties.propArray})
                }else{
                    this.setData({handleArray:arr})
                }
          },
          fuzzyQuery( keyWord,list) {
              list =this.properties.propArray
            var reg =  new RegExp(keyWord);
            var arr = [];
            for (var i = 0; i < list.length; i++) {
              if (reg.test(list[i].name)) {
                arr.push(list[i]);
              }
            }
            return arr;
          }
      }
  })